Visual Studio builds: Support Visual Studio 2017
authorChun-wei Fan <fanchunwei@src.gnome.org>
Wed, 15 Feb 2017 06:43:15 +0000 (14:43 +0800)
committerChun-wei Fan <fanchunwei@src.gnome.org>
Wed, 15 Feb 2017 06:43:15 +0000 (14:43 +0800)
Update the autotools scripts to support Visual Studio 2017 builds by
copying the Visual Studio 2013 projects and updateing the items as
necessary to obtain the Visual Studio 2017 projects.

Note that the format of the toolset string changed, so allow one to
pass in and thus use a custom toolset string, otherwise the default
toolset string will be generated as it was before.

Note also the Visual Studio 2017 aims to be compatible with Visual
Studio 2015 on the CRT level, so binaries built with 2017 should
work without problems with the binaries built with 2015.

configure.ac
win32/Makefile-newvs.am
win32/Makefile.am
win32/vs12/Makefile.am
win32/vs14/Makefile.am
win32/vs15/Makefile.am [new file with mode: 0644]

index c902f57084dc81c6e51f7238f2cc6a613607409c..8f41e77520b73563389d26f1555c28c496744942 100644 (file)
@@ -1969,6 +1969,12 @@ if test "x${enable_Bsymbolic}" = "xyes" ; then
 fi
 AC_SUBST(GTK_LINK_FLAGS)
 
+dnl
+dnl Check whether MSVC toolset is explicitly set
+dnl
+AM_CONDITIONAL(MSVC_BASE_NO_TOOLSET_SET, [test x$MSVC_BASE_TOOLSET = x])
+AM_CONDITIONAL(MSVC_NO_TOOLSET_SET, [test x$MSVC_TOOLSET = x])
+
 AC_CONFIG_FILES([
 README
 INSTALL
@@ -2025,6 +2031,7 @@ win32/Makefile
 win32/vs12/Makefile
 win32/vs12/gtk4-version-paths.props
 win32/vs14/Makefile
+win32/vs15/Makefile
 gdk/Makefile
 gdk/broadway/Makefile
 gdk/x11/Makefile
index ecdf3b5568837065bbea716769cac0bc184ce635..3a91862b6d7eda530cb398203bfe8a29400dd729 100644 (file)
@@ -8,14 +8,23 @@
 # Author: Fan, Chun-wei
 # November 05, 2012
 
-# MSVC_BASE_VER: Baseline MSVC 201x version to copy/process project files from (10 for 2010, 11 for 2012, 12 for 2013, 14 for 2015 and so on)
-# MSVC_BASE_VER_LONG: Long Version of baseline Visual Studio 201x version (2010, 2012, 2013, 14 and so on)
-# MSVC_VER_LONG: Long Version of Visual Studio (2012, 2013, 14 and so on)
-# MSVC_VER: Short Version of Visual Studio (11 for 2012, 12 for 2013, 14 for 2015 and so on)
-# MSVC_FORMAT_VER: Use 12 for MSVC 2012 through 2015
+# MSVC_BASE_VER: Baseline MSVC 201x version to copy/process project files from (100 for 2010, 120 for 2013)
+# MSVC_BASE_VER_LONG: Long Version of baseline Visual Studio 201x version (2010, 2012, 2013, 14, 15)
+# MSVC_BASE_TOOLSET: Use if baseline MSVC toolset is not in the form v$(MSVC_BASE_VER)0, meaning v$(MSVC_BASE_TOOLSET)
+# MSVC_VER_LONG: Long Version of target Visual Studio (2012, 2013, 14 and so on)
+# MSVC_VER: Short Version of target Visual Studio (110 for 2012, 120 for 2013, 140 for 2015, 141 for 2017)
+# MSVC_TOOLSET: Use if target MSVC toolsett is not in the form v $(MSVC_VER)0, meaning v$(MSVC_TOOLSET)
+
+if MSVC_BASE_NO_TOOLSET_SET
+MSVC_BASE_TOOLSET = $(MSVC_BASE_VER)0
+endif
+
+if MSVC_NO_TOOLSET_SET
+MSVC_TOOLSET = $(MSVC_VER)0
+endif
 
 %.sln:
-       sed 's/11\.00/$(MSVC_FORMAT_VER)\.00/g' < $(top_srcdir)/win32/vs$(MSVC_BASE_VER)/$@ > $(top_builddir)/win32/vs$(MSVC_VER)/$@.tmp
+       sed 's/11\.00/12\.00/g' < $(top_srcdir)/win32/vs$(MSVC_BASE_VER)/$@ > $(top_builddir)/win32/vs$(MSVC_VER)/$@.tmp
        sed 's/$(MSVC_BASE_VER_LONG)/$(MSVC_VER_LONG)/g' < $(top_builddir)/win32/vs$(MSVC_VER)/$@.tmp > $(top_builddir)/win32/vs$(MSVC_VER)/$@
        rm $(top_builddir)/win32/vs$(MSVC_VER)/$@.tmp
 
@@ -26,9 +35,9 @@
 
 %.vcxproj:
        if test -e $(top_srcdir)/win32/vs$(MSVC_BASE_VER)/$@; then \
-               sed 's/v$(MSVC_BASE_VER)0/v$(MSVC_VER)0/g' < $(top_srcdir)/win32/vs$(MSVC_BASE_VER)/$@ > $(top_builddir)/win32/vs$(MSVC_VER)/$@; \
+               sed 's/v$(MSVC_BASE_TOOLSET)/v$(MSVC_TOOLSET)/g' < $(top_srcdir)/win32/vs$(MSVC_BASE_VER)/$@ > $(top_builddir)/win32/vs$(MSVC_VER)/$@; \
        else \
-               sed 's/v$(MSVC_BASE_VER)0/v$(MSVC_VER)0/g' < $(top_builddir)/win32/vs$(MSVC_BASE_VER)/$@ > $(top_builddir)/win32/vs$(MSVC_VER)/$@; \
+               sed 's/v$(MSVC_BASE_TOOLSET)/v$(MSVC_TOOLSET)/g' < $(top_builddir)/win32/vs$(MSVC_BASE_VER)/$@ > $(top_builddir)/win32/vs$(MSVC_VER)/$@; \
        fi
 
 %.props: $(top_builddir)/win32/vs$(MSVC_BASE_VER)/Makefile
index c1d0750b6c5e6030614373fa5311c284fe2d7e60..987f2d8e88ce5a61716b12f54e0b3781ea10b75e 100644 (file)
@@ -35,7 +35,8 @@ gen-enums.bat: $(srcdir)/gen-enums.batin gsk.enum.headers
 
 SUBDIRS =      \
        vs12    \
-       vs14
+       vs14    \
+       vs15
 
 EXTRA_DIST +=  \
        detectenv-msvc.mak              \
index b6bf35ac7bd37258cdd20777788993c55eb5b440..2535417f9fae503ba3c0844c658d03080675a4a2 100644 (file)
@@ -64,6 +64,7 @@ DISTCLEANFILES = \
 
 gtk4-install.props: $(top_srcdir)/win32/vs12/gtk4-install.propsin $(MSVC12_HEADERS_LISTS)
        -$(RM) $(top_builddir)/win32/vs14/gtk4-install.props
+       -$(RM) $(top_builddir)/win32/vs15/gtk4-install.props
        $(CPP) -P - <$(top_srcdir)/win32/vs12/gtk4-install.propsin >$@
        rm $(MSVC12_HEADERS_LISTS)
 
index d23b1477d53b6ea4113f08afb0670cb48057b755..82944b81704555cefd9a3e87df16af97c223f9bf 100644 (file)
@@ -39,7 +39,6 @@ DISTCLEANFILES = $(EXTRA_DIST)
 MSVC_BASE_VER = 12
 MSVC_BASE_VER_LONG = 2013
 MSVC_VER = 14
-MSVC_FORMAT_VER = 12
 MSVC_VER_LONG = 14
 
 include $(top_srcdir)/win32/Makefile-newvs.am
diff --git a/win32/vs15/Makefile.am b/win32/vs15/Makefile.am
new file mode 100644 (file)
index 0000000..8074278
--- /dev/null
@@ -0,0 +1,47 @@
+include $(top_srcdir)/Makefile.decl
+
+EXTRA_DIST +=  \
+       README.txt      \
+       gtk+-4.sln      \
+       gtk4-prebuild.vcxproj   \
+       gtk4-prebuild.vcxproj.filters   \
+       gdk4-win32.vcxproj      \
+       gdk4-win32.vcxproj.filters      \
+       gdk-4.vcxproj   \
+       gdk-4.vcxproj.filters   \
+       gsk-4.vcxproj   \
+       gsk-4.vcxproj.filters   \
+       gtk-4.vcxproj   \
+       gtk-4.vcxproj.filters   \
+       gtk4-builder-tool.vcxproj               \
+       gtk4-builder-tool.vcxproj.filters       \
+       gtk4-encode-symbolic-svg.vcxproj        \
+       gtk4-encode-symbolic-svg.vcxproj.filters        \
+       gtk4-query-settings.vcxproj             \
+       gtk4-query-settings.vcxproj.filters     \
+       gtk4-update-icon-cache.vcxproj          \
+       gtk4-update-icon-cache.vcxproj.filters  \
+       gtk4-demo.vcxproj       \
+       gtk4-demo.vcxproj.filters       \
+       gtk4-demo-application.vcxproj   \
+       gtk4-demo-application.vcxproj.filters   \
+       gtk4-icon-browser.vcxproj       \
+       gtk4-icon-browser.vcxproj.filters       \
+       gtk4-install.vcxproj    \
+       gtk4-install.vcxproj.filters    \
+       gtk4-build-defines.props        \
+       gtk4-gen-srcs.props     \
+       gtk4-install.props      \
+       gtk4-version-paths.props
+
+DISTCLEANFILES = $(EXTRA_DIST)
+
+MSVC_BASE_VER = 12
+MSVC_BASE_VER_LONG = 2013
+MSVC_VER = 15
+MSVC_VER_LONG = 15
+MSVC_TOOLSET = 141
+
+include $(top_srcdir)/win32/Makefile-newvs.am
+
+-include $(top_srcdir)/git.mk